home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / TMT9.CPP < prev    next >
C/C++ Source or Header  |  1995-01-11  |  2KB  |  56 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4.  
  5. #include "include.h"
  6. #include "newmat.h"
  7.  
  8.  
  9. /**************************** test program ******************************/
  10.  
  11. void Print(const Matrix& X);
  12. void Print(const UpperTriangularMatrix& X);
  13. void Print(const DiagonalMatrix& X);
  14. void Print(const SymmetricMatrix& X);
  15. void Print(const LowerTriangularMatrix& X);
  16.  
  17. void Clean(Matrix&, Real);
  18. void Clean(DiagonalMatrix&, Real);
  19.  
  20. void trymat9()
  21. {
  22. //   cout << "\nNinth test of Matrix package\n";
  23.    Tracer et("Ninth test of Matrix package");
  24.    Exception::PrintTrace(TRUE);
  25.  
  26.  
  27.    int i; int j;
  28.    Matrix A(7,7); Matrix X(7,3);
  29.    for (i=1;i<=7;i++) for (j=1;j<=7;j++) A(i,j)=i*i+j+((i==j) ? 1 : 0);
  30.    for (i=1;i<=7;i++) for (j=1;j<=3;j++) X(i,j)=i-j;
  31.    Matrix B = A.i(); DiagonalMatrix D(7); D=1.0;
  32.    {
  33.       Tracer et1("Stage 1");
  34.       Matrix Q = B*A-D; Clean(Q, 0.000000001); Print(Q);
  35.       Q=A; Q = Q.i() * X; Q = A*Q - X; Clean(Q, 0.000000001); Print(Q);
  36.       Q=X; Q = A.i() * Q; Q = A*Q - X; Clean(Q, 0.000000001); Print(Q);
  37.    }
  38.    for (i=1;i<=7;i++) D(i,i)=i*i+1;
  39.    DiagonalMatrix E(3); for (i=1;i<=3;i++) E(i,i)=i+23;
  40.    {
  41.       Tracer et1("Stage 2");
  42.       Matrix DXE = D.i() * X * E;
  43.       DXE = E.i() * DXE.t() * D - X.t(); Clean(DXE, 0.00000001); Print(DXE); 
  44.       E=D; for (i=1;i<=7;i++) E(i,i)=i*3+1;
  45.    }
  46.    DiagonalMatrix F=D;
  47.    {
  48.       Tracer et1("Stage 3");
  49.       F=E.i()*F; F=F*E-D; Clean(F,0.00000001); Print(F);
  50.       F=E.i()*D; F=F*E-D; Clean(F,0.00000001); Print(F);
  51.    }
  52.    { F=E; F=F.i()*D; F=F*E-D; Clean(F,0.00000001); Print(F); }
  53. //   cout << "\nEnd of ninth test\n";
  54. }
  55.  
  56.